//package demo.dubbo.web.util;
//
//import java.io.File;
//import java.io.FileFilter;
//import java.lang.reflect.Method;
//import java.net.URL;
//import java.net.URLDecoder;
//import java.util.ArrayList;
//import java.util.Enumeration;
//import java.util.List;
//
///**
// * Created by lushun.chen on 2017/3/20.
// *
// * @author lushun.chen
// */
//public class ParseJar {
//    static {
//        List<Class> clazzs = new ArrayList<>();
//        // 是否循环搜索子包
//        boolean recursive = true;
//
//        // 包名字
//        String packageName = "com.ytx";
//        // 包名对应的路径名称
//        String packageDirName = packageName.replace('.', '/');
//
//        Enumeration<URL> dirs;
//
//        try {
//            dirs = Thread.currentThread().getContextClassLoader().getResources(packageDirName);
//            while (dirs.hasMoreElements()) {
//                URL url = dirs.nextElement();
//
//                String protocol = url.getProtocol();
//
//                if ("file".equals(protocol)) {
//                    String filePath = URLDecoder.decode(url.getFile(), "UTF-8");
//                    findClassInPackageByFile(packageName, filePath, recursive, clazzs);
//                } else if ("jar".equals(protocol)) {
//                    System.out.println("jar类型的扫描");
//                }
//            }
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//
//        for (Class clazz : clazzs) {
//            System.out.println();
//            for (Method method : clazz.getMethods()) {
//                method.getName();
//                System.out.println(method.getName());
//            }
//        }
//    }
//
//    private static void findClassInPackageByFile(String packageName, String filePath, boolean recursive, List<Class> clazzs) {
//        File dir = new File(filePath);
//        if (!dir.exists() || !dir.isDirectory()) {
//            return;
//        }
//        // 在给定的目录下找到所有的文件，并且进行条件过滤
//        File[] dirFiles = dir.listFiles(new FileFilter() {
//
//            @Override
//            public boolean accept(File file) {
//                boolean acceptDir = recursive && file.isDirectory();// 接受dir目录
//                boolean acceptClass = file.getName().endsWith("Manager.class");// 接受class文件
//                return acceptDir || acceptClass;
//            }
//        });
//
//        for (File file : dirFiles) {
//            if (file.isDirectory()) {
//                findClassInPackageByFile(packageName + "." + file.getName(), file.getAbsolutePath(), recursive, clazzs);
//            } else {
//                String className = file.getName().substring(0, file.getName().length() - 6);
//                try {
//                    clazzs.add(Thread.currentThread().getContextClassLoader().loadClass(packageName + "." + className));
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            }
//        }
//    }
//
//}
